現實生活中,如果我們需要存放許多東西,可能會找一個櫃子集中起來。有的時候,我們會好好把東西分門別類,然後把每個櫃子貼上對應的標籤,然而大多時候,我(們?)都蠻懶的,會把所有東西全部扔進櫃子裡,有幾個櫃子就塞幾個。
(每個人都有一個不分類的櫃子)
不過無論如何,按照這個概念,我們都需要一個更大的資料型態,來存放一些比較小的資料型態(字串、整數等),也因此 Python 中有四種可以存放的型態:
串列 List 大概是前面提及四個資料型態中,最常被使用到的,而 List 有兩個特性——有排序性、可改變裡面存放的物件。(請把這兩個特性刺在手上,牢牢記在心裡!)
在 Python 中有兩種方法可以創建 Python:
使用內建函數 list()
list_one = list()
print(list_one) # [],這是一個空串列
list_two = list("apple")
print(list_two) # ['a', 'p', 'p', 'l', 'e']
這邊要注意的是,如果使用 list()
創建 list,裡面的引數 argument 必須是一個可迭代(iterable)物件,在上面的範例裡,字串 "apple"
作為引數就是一個可迭代物件。
使用中括號 []
list_three = ["peach", 123, True]
print(list_three) # ['peach', 123, True]
有發現了嗎?在 list_three
裡面我們放了字串、整數、布林值等三種資料型態的物件,這告訴我們可以在串列中,基本上存放各式各樣的物件。(只要你喜歡,有什麼不可以!)
雖然說 Python 中的串列看起來像是個無窮無盡的空間,但實際上也不是像小叮噹的四次元口袋無限大(小叮噹的口袋據說也是有極限的),而串列能儲放的多寡,則取決於電腦的記憶體大小,但⋯⋯應該是用不完啦!
透過串列的方法 len()
,我們可以知道串列裡面有幾個元素 element,這邊的 element 指的即是「串列裡面的東西」。
fruits = ['banana', 'orange', 'mango', 'lemon']
print(len(fruits)) # 4,代表有四個元素
如果我們想從串列中拿出某個想要的東西,總不可能像小叮噹胡亂翻找自己的口袋吧,這時候又要再次使用昨天復健文章中的索引值 index。
# 從開頭計算
fruits = ['banana', 'orange', 'mango', 'lemon']
# index 0 1 2 3
# 從結尾計算
fruits = ['banana', 'orange', 'mango', 'lemon']
# index -4 -3 -2 -1
print(fruits[1]) # orange
print(fruits[-3]) # orange
我們繼續使用剛剛的 fruits
做舉例,假設我們現在想要將第一個(index 為 0)元素 'banana'
換成 'kiwi'
,我們可以用 fruits[0] = 'kiwi'
,這時候 'banana'
將不復存在,變成了 'kiwi'
,不信可以用 print(fruits[0])
印出來看看。
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits[0] = 'kiwi'
print(fruits[0]) # kiwi
假設我們的 fruits
串列真的就像小叮噹的四次元口袋,裡面有好多好多的東西,然後我們想確認裡面到底有沒有 'lime'
這個元素,總不可能像小叮噹一個一個翻找吧?
我們可以透過 in
這個運算子,來確認串列 fruits
裡有沒有我們所要尋找的元素。
fruits = ['banana', 'orange', 'mango', 'lemon']
does_exist = 'banana' in fruits
print(does_exist) # True
does_exist = 'lime' in fruits
print(does_exist) # False
一如字串可以用切片 slicing,串列也可以使用切片切出其中一段元素,如果忘記切片是什麼,也可以看一下昨天的復健文章,現在我們直接看範例。
fruits = ['banana', 'orange', 'mango', 'lemon']
all_fruits = fruits[0:4] # 取出 index 0 到 4 的元素,也就是全部
# this will also give the same result as the one above
all_fruits = fruits[0:] # 取得 index 0 到最後的元素,也是全部
orange_and_mango = fruits[1:3] # 取出 index 1 到 3 的元素,注意 index 1 到 3 並不包括 3,所以不會取得 'lemon'
banana_orange_mango = fruits[:3]
banana_and_mango = fruits[::2] # 從最開始取得,其中取得的間距為 2,所以會取得 index 0 與 index 2 的元素
隨著學習的時間越來長,開始會找一些奇怪的問題、梗圖來娛樂自己,像是「Python 跟蟒蛇(python)有什麼關係嗎?」、「為什麼 Python 會被這麼多人推薦說很好學?」,這些問題再往後的文章,也希望陸續分享給大家。
學習一個語言剛開始看起來很困難,但深入研究之後,會逐漸找到許多樂趣,希望我們繼續撐過這 30 天!(五分之一了!)